import java.util.HashMap;

/**
 * @作者 钟先崟
 * @时间 2023-02-19 20:50
 * @说明1941. 检查是否所有字符出现次数相同
 * 给你一个字符串 s ，如果 s 是一个 好 字符串，请你返回 true ，否则请返回 false 。
 * 如果 s 中出现过的 所有 字符的出现次数 相同 ，那么我们称字符串 s 是 好 字符串。
 * 示例 1：
 * 输入：s = "abacbc"
 * 输出：true
 * 解释：s 中出现过的字符为 'a'，'b' 和 'c' 。s 中所有字符均出现 2 次。
 */
public class Solution {
    public static void main(String[] args) {
        System.out.println(areOccurrencesEqual("abacbc"));
    }

    /**
     * 执行用时：
     * 9 ms
     * , 在所有 Java 提交中击败了
     * 10.10%
     * 的用户
     * 内存消耗：
     * 39.9 MB
     * , 在所有 Java 提交中击败了
     * 63.94%
     * 的用户
     * @param s
     * @return
     */
    public static boolean areOccurrencesEqual(String s) {
        HashMap<Character, Integer> hashMap = new HashMap();
        int x = 0;
        for (int i = 0; i < s.length(); i++) {
            Integer integer = hashMap.get(s.charAt(i));
            if (integer == null) {
                hashMap.put(s.charAt(i), 1);
                x = 1;
            } else {
                hashMap.replace(s.charAt(i), integer + 1);
                x = integer + 1;
            }
        }
        for (int i = 0; i < s.length(); i++) {
            Integer integer = hashMap.get(s.charAt(i));
            if (integer != x) return false;
        }
        return true;
    }
}
